package practice9;

import java.util.HashSet;
import java.util.Set;

/**
 * # 问题描述
 * 一个整数如果由相同数字构成，可以称为完美整数；比如说1、11、333就是完美整数，12、19、101就是不完美的整数。
 * 现在想知道，在区间 `[x, y]` 中有多少个整数是完美整数。
 *
 * ## 输入格式
 * 每个样例有一行，是整数 `x` 和 `y`；（1 ≤ x ≤ y ≤ 10^9）
 *
 * ## 输出格式
 * 每一个样例一行，是整数 `m`，表示区间 `[x, y]` 中有 m 个整数是完美整数。
 *
 * ## 输入样例1
 * 1 10
 *
 * ## 输出样例1
 *
 * 9
 *
 * ## 输入样例2
 * 2 22
 *
 *
 * ## 输出样例2
 * 10
 *
 * ## 数据范围
 *
 * 1 ≤ t ≤ 1000
 * 1 ≤ x ≤ y ≤ 10^9
 */
public class Main {
    public static int solution(int x, int y) {
        // Edit your code here

        // 生成所有长度为1到9的完美整数
        Set<Integer> perfectIntegers = new HashSet<>();
        for (int digit = 1; digit <= 9; digit++) {
            int num = digit;
            for (int length = 1; length <= 9; length++) {
                perfectIntegers.add(num);
                num = num * 10 + digit;
            }
        }
        int count = 0;
        for (int i = x; i <= y; i++) {
            if (perfectIntegers.contains(i)) {
                count++;
            }
        }
        return count;
        //return -1;
    }

    public static void main(String[] args) {
        // Add your test cases here
        
        System.out.println(solution(1, 10) == 9);
        System.out.println(solution(2, 22) == 10);
    }
}
